package com.gitee.zw.rule.model;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 源规则域
 *
 * @author: johnny zhou
 * @date: 2024/05/09
 *
 *
 */
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class SourceRuleDomain {
    /**
     * 域编码
     */
    private String code;
    /**
     * 域对应的实体类名，编译成Drools 的FactType, 如下示例中，factClass=“ClientInfo”：<br/>
     * <pre>
     * declare ClientInfo
     *     blacklisted_cate :String
     *     blacklisted_type :Integer
     *     qualifi_rate :Integer
     *     blacklisted_flag :Boolean
     *     qualifi_level :String
     * end
     * </pre>
     */
    private String factClass;
    /**
     * 域对应的规则集，一个域下可以包含多个规则，它们会被编译在一个Drools 规则文件里，按顺序执行。
     */
    private List<SourceRule> rules;
    /**
     * 域对应的维度类型，一个维度类型对应一个实体类，编译成Drools 的FactType， 如下示例中包含5个 {@link SourceDimenisonType}：<br/>
     * <pre>
     * declare ClientInfo
     *     blacklisted_cate :String
     *     blacklisted_type :Integer
     *     qualifi_rate :Integer
     *     blacklisted_flag :Boolean
     *     qualifi_level :String
     * end
     * </pre>
     */
    private List<SourceDimenisonType> dimensionTypes;
}
